﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using CondominioWeb.Persistencia.NHibernate;
using CondominioWeb.Dominio;

namespace CondominioWeb.Pruebas
{
    [TestFixture]
    public class TestTipoViviendaDAO
    {
        private Tipo_ViviendaDAO tipo_ViviendaDAO = new Tipo_ViviendaDAO();
       
        [Test]
        public void TestCrear()
        {

            // 1. Instanciando el objeto TO
         //   Area_Comun nuevoArea_Comun = new Area_Comun();
            Tipo_Vivienda nuevoTipo_Vivienda = new Tipo_Vivienda();

            nuevoTipo_Vivienda.Codigo_Tipo_Vivienda = 1;
            nuevoTipo_Vivienda.Descripcion = "Tipo A";
            nuevoTipo_Vivienda.Estado = "Activo";
            // 2. Llamada al método del DAO a probar
            Tipo_Vivienda Tipo_ViviendaCreado = tipo_ViviendaDAO.Crear(nuevoTipo_Vivienda);
            // 4. Implementar las validaciones
            Assert.NotNull(Tipo_ViviendaCreado);
            Assert.AreEqual(nuevoTipo_Vivienda.Descripcion,Tipo_ViviendaCreado.Descripcion);
            Assert.IsNotNull(Tipo_ViviendaCreado.Descripcion);

        }
        [Test]
        public void TestObtener()
        {
            int _cod_Tipo_Vivienda;
            // 1. Instanciando el objeto TO
            // 2. Llamada al método del DAO a probar
            _cod_Tipo_Vivienda = 1;
            Tipo_Vivienda Tipo_ViviendaConsulta = tipo_ViviendaDAO.Obtener(_cod_Tipo_Vivienda);
                        
            // 4. Implementar las validaciones
            Assert.NotNull(Tipo_ViviendaConsulta);
            Assert.AreEqual(Tipo_ViviendaConsulta.Codigo_Tipo_Vivienda, _cod_Tipo_Vivienda);
            Assert.IsNotNull(Tipo_ViviendaConsulta.Descripcion);
        }

        [Test]
        public void TestModificar()
        {

            // 1. Instanciando el objeto TO
            Tipo_Vivienda oTipo_Vivienda = new Tipo_Vivienda();

            oTipo_Vivienda.Codigo_Tipo_Vivienda = 1;
            oTipo_Vivienda.Descripcion = "Casa";
            oTipo_Vivienda.Estado = "Activo";
            
            // 2. Llamada al método del DAO a probar
            Tipo_Vivienda Tipo_ViviendaModificado = tipo_ViviendaDAO.Modificar(oTipo_Vivienda);
            // 4. Implementar las validaciones
            Assert.NotNull(Tipo_ViviendaModificado);
            Assert.AreEqual(oTipo_Vivienda.Descripcion, Tipo_ViviendaModificado.Descripcion);
            Assert.IsNotNull(Tipo_ViviendaModificado.Descripcion);
        }

        [Test]
        public void TestEliminar()
        {
            // 1. Instanciando el objeto TO
            Tipo_Vivienda oTipo_Vivienda = new Tipo_Vivienda();
            oTipo_Vivienda.Codigo_Tipo_Vivienda = 2;
            // 2. Llamada al método del DAO a probar
            tipo_ViviendaDAO.Eliminar(oTipo_Vivienda);

            Tipo_Vivienda Tipo_ViviendaConsulta = tipo_ViviendaDAO.Obtener(oTipo_Vivienda.Codigo_Tipo_Vivienda);
            Assert.IsNull(Tipo_ViviendaConsulta);
        }

        [Test]
        public void TestListarTipoViviendaPorDescripcion()
        {
            string descripcion = "ED";
            ICollection<Tipo_Vivienda> LTipoVivienda = tipo_ViviendaDAO.ListarTipoViviendaPorDescripcion(descripcion);
            Assert.NotNull(LTipoVivienda);
            Assert.Greater(LTipoVivienda.Count, 0);
        }

    }
}